
// region 私有常量定义
/**
 * 面对不透明度
 * 注： 最好线、面都是用一个透明度
 * @type {number}
 */
export const defaultOpacity = 0.8
export const defaultPolygonFillColor = 'rgb(73,168,241)'
export const defaultPolygonOpacity = 1
export const defaultLayerPolygonFillColor = 'rgb(115,212,238)'
export const defaultLayerPolygonOpacity = 1
export const defaultLineWeight = 0.5
export const defaultHeight = 2000
export const defaultAreaLineColor = 'red'

/**
 * 图层的三维属性
 * 1. 默认是启用高度面，如需要高度线，请使用 getLayer3DOptions 拷贝一份，再修改
 * @type {{forceRenderOnMoving: boolean, enableAltitude: boolean, altitudeProperty: string, drawAltitude: {polygonFill: string, polygonOpacity: number}, forceRenderOnRotating: boolean, forceRenderOnZooming: boolean}}
 */
export const layer3DOptions = {
  // 启用高度绘制
  enableAltitude: true,
  altitudeProperty: 'altitude',
  // 地图移动、缩放、旋转时强制渲染
  forceRenderOnMoving: true,
  forceRenderOnZooming: true,
  forceRenderOnRotating: true,
  // 绘制属性
  drawAltitude: {
    // 高度线
    // lineWidth: 1,
    // lineColor: '#000',

    // 高度面
    // 填充色
    polygonFill: '#666',
    // 不透明度
    polygonOpacity: defaultOpacity + 1
  }
}

/**
 * 默认的几何属性 不提供修改
 * @type {{cursor: string, symbol: {polygonFill: string, lineColor: string, polygonOpacity: number, lineWidth: number}, dragShadow: boolean, visible: boolean, draggable: boolean, shadowBlur: number, enableAltitude: boolean, shadowColor: string}}
 */
export const defaultPolygonOptions = {
  // 显示
  visible: true,
  // 鼠标样式
  cursor: 'pointer',
  shadowBlur: 0,
  // 阴影
  // shadowColor: 'red',
  // 可拖动
  draggable: false,
  // 拖影
  // dragShadow: true,
  enableAltitude: true,
  zIndex: 10,
  symbol: {
    // 线色
    lineColor: defaultPolygonFillColor,
    // 线宽
    lineWidth: defaultLineWeight,
    // 填充色
    polygonFill: defaultPolygonFillColor,
    // 不透明度
    polygonOpacity: defaultPolygonOpacity
  }
  // 绘制高度的几何，需要设置这个
  // ,
  // properties: {
  //   altitude : 1000
  // }
}

/**
 * 默认的高度面属性
 * @type {{symbol: {lineColor: string, lineWidth: number}, dragShadow: boolean, visible: boolean, draggable: boolean, editable: boolean, shadowColor: string, properties: {altitude: number}}}
 */
export const defaultLineStringOptions = {
  // enableAltitude: true,
  visible: true,
  editable: true,
  shadowColor: 'black',
  draggable: false,
  dragShadow: false,

  // drawOnAxis : null,  // force dragging stick on a axis, can be: x, y
  // arrowPlacement : 'vertex-last', // arrow's placement: vertex-first, vertex-last, vertex-firstlast, point
  symbol: {
    lineColor: defaultPolygonFillColor,
    lineWidth: defaultLineWeight
  },
  properties: {
    // 3个值，[开始点的高度，结束点高度，最大高度]
    // 可以是一个值，那么就表示一个统一高度
    // altitude : 1000
    altitude: defaultHeight
  }
}
/* eslint-disable */
const defaultHeatLayerOptions = {
    // 不理解的属性
    // heatValueScale: 0.7,
    // 旋转时强制刷新
    forceRenderOnRotating: true,
    // 移动时强制刷新
    forceRenderOnMoving: true,
    // 模糊因子, 值越大,越平滑,默认值是15
    // blur: 20,
    // 每个数据点的半径(默认值25，也建议25，我建议不能小于20）
    radius: 20,
    // 最小不透明读，越小越透明
    minOpacity: 0.8,
    zIndex: 100
    // 热力梯度，是热力点外围的颜色值，从外围到里，值是递增的，最大值就是中心的位置
    // gradient: {
    //   0.4: 'blue',
    //   0.6: 'cyan',
    //   0.7: 'lime',
    //   0.8: 'yellow',
    //   1.0: 'red'
    // }
}

// endregion

/**
 * 获取默认的几何面属性设置
 * @returns {*}
 */
export function getDefaultPolygonOptions() {
    const result = {}
    Object.assign(result, defaultPolygonOptions)
    return result
}

/**
 * 获取默认的lineString属性设置
 * @returns {{}}
 */
export function getDefaultLineStringOptions() {
    const result = {}
    Object.assign(result, defaultLineStringOptions)
    return result
}

/**
 * 获取默认的图层3D属性
 * @returns {{}}
 */
export function getLayer3DOptions() {
    const result = {}
    Object.assign(result, layer3DOptions)
    return result
}
